package com.lost.octopus.es.processor.entity.db;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;

/**
 * es同步#增量消费规则表
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("T_ES_DATA_CAPTURE_RULE")
public class EsDataCaptureRuleEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 规则ID
     */
    @TableId(type = IdType.ASSIGN_UUID)
    private String ruleId;

    /**
     * 规则对应-数据库
     */
    @TableField
    private String acceptSchema;

    /**
     * 规则对应-表
     */
    @TableField
    private String acceptTable;

    /**
     * 父规则ID,若有则sql会通过父id，进行in查询
     */
    @TableField
    private String parentId;

    /**
     * 查询sql，若是顶级元素（parentId is null），则根据捕获的表id进行等于查询，否则用parentId in查询
     */
    @TableField
    private String querySql;

    /**
     * EsSyncIndexOperator es同步类的类名，用于从spring bean获取并触发更新
     */
    @TableField
    private String esOperatorBeanName;

    /**
     * 日志打印额外的标识，为了区分日志，不宜过长
     */
    @TableField
    private String sign;

    /**
     * 排序字段，有些es处理规则需要顺序处理，就需要注意
     */
    @TableField
    private Integer sort;

    /**
     * 创建人 简拼即可，如zhangbh
     */
    @TableField
    private String createUser;

    /**
     * 注销标识(0:否|1:是)
     */
    @TableField
    @TableLogic(value = "0", delval = "1")
    private String zxbs;


    @JsonIgnore
    public String getKey() {
        return acceptSchema + "." + acceptTable;
    }

    @JsonIgnore
    public boolean isTop() {
        return parentId == null;
    }

}
